package com.atguigu.desaes;



import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import org.junit.Test;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public class DesAesDemo {
    public static void main(String[] args) throws Exception {
        String input = "原文1246466";
        String key = "12345678";
        //算法
        //String algorithm = "DES";//VGwnhRNIsy5KyhlC02WqxA==
        String algorithm = "DES";//oI5orFIbEms1CeB7LZUr6g==
        // 转换规则
        String transformation = "DES/CBC/PKCS5Padding";
        //CBC模式下 需要一个IV向量
        IvParameterSpec iv = new IvParameterSpec(key.getBytes());
        Cipher cipher = Cipher.getInstance(transformation);
        //指定密钥规则
        //第一个参数是密钥的字节数组，第二是算法
        SecretKeySpec sks = new SecretKeySpec(key.getBytes(),algorithm);
        // 第一个参数：表示模式，有加密模式和解密模式
        // 第二个参数：表示秘钥规则
        //DECRYPT_MODE  常数用于将密码初始化为解密模式。
        //ENCRYPT_MODE  常数用于将密码初始化为加密模式
        //cipher.init(Cipher.ENCRYPT_MODE,sks);//ECB模式初始化
        cipher.init(Cipher.ENCRYPT_MODE,sks,iv);
        byte[] bytes = cipher.doFinal(input.getBytes());
        System.out.println(Base64.encode(bytes));

        //解密
        System.out.println("解密=====");
        cipher.init(Cipher.DECRYPT_MODE,sks,iv);
        byte[] jiemi = cipher.doFinal(bytes);
        System.out.println(new String(jiemi));


    }


}
